The use and application of computer graphics to all kinds of systems environments continues to increase to an even greater extent with the availability of faster and faster information processing and retrieval devices. The speed of operation of such devices remains a high priority design objective. This is especially true in a graphics system and even to a greater extent with 3D graphics systems. Such graphics systems require a great deal of processing for huge amounts of data and the speed of data flow is critical in providing a new product or system or in designing graphics systems to apply to new uses.
In all data and information processing systems, and especially in computer graphics systems, much time is consumed in accessing data from a memory or storage location, then processing that information and sending the processed information to another location for subsequent access, processing and/or display. As the speed of new processors continues to increase, access time for accessing and retrieving data from memory is becoming more and more of a bottleneck in terms of system speed and overall performance.
Graphic systems must be capable of performing more sophisticated functions in less time in order to process greater amounts of graphical data required by modern software applications. There is a continuing need for improvements in software methods and hardware implementations to draw three-dimensional objects using texture maps which contain full color, shading, and transparency blending information. The development of raster display systems has dramatically reduced the overall cost and increased the capabilities of graphic systems. In a raster display system, a set of horizontal or orthogonal scan lines, each comprising a row of pixels, forms an array or grid of pixels to represent the entire screen area. The screen is preferably a cathode ray tube (CRT) or liquid crystal display (LCD) or the like capable of scanning the entire pixel grid at a relatively high rate to reduce flicker as much as possible.
The pixel data is preferably stored in a frame buffer comprising dynamic random access memories (DRAMs), where each pixel is represented by one or more bytes depending upon the desired resolution, color, brightness and other variables. Typical display systems can draw screens with multiple colors with a variety of screen resolutions, such as, but not limited to, 640.times.480, 800.times.600, 1024.times.768, 1280.times.480, 1280.times.1024, or other combinations depending upon the software drivers and the hardware used. A video controller scans and converts the pixel data in the frame buffer to control signals required by the screen system to display the information on the screen. The video controller scans each of the pixels sequentially, from top to bottom and from left to right on the display screen. In a color graphics system using a CRT, three separate beams are controlled i.e. one beam each for each of the primary colors, where the intensity of each of the beams is determined by the pixel value corresponding to the respective colors. A similar system is used for LCD devices. Each pixel value may comprise, for example, 24 bits, i.e. one 8-bit byte for each of the primary colors red, green and blue, where the byte value determines the intensity of the respective color to be displayed.
With specific reference to computer graphics applications, image texture information, such as color and transparency of displayed images, is stored in texture maps. A texture map is a two dimensional array of "texels" consisting of "U" texels in the horizontal direction, and "V" lines of texels in the vertical direction. As a polygon is rendered, texels are fetched from a "texture map", processed for lighting and blending, and then such texels become "pixels" of the polygon. As an image is produced on a display screen, each line of data stored in a frame buffer is sequentially accessed and transferred to the display device to fill-in corresponding sequential lines of pixels on the display. The frame buffer is updated by a draw engine portion of the graphics system, which is, in turn, updated by a texture engine portion of the graphics system. The texture engine accesses a texture map which is usually stored in system or host memory.
Texture maps in memory may also be stored in a local relatively fast and small "local" memory in a graphics device, or such maps may be stored in the relatively slow and large "systen" or "host" menory. When stored in the local memory, texture nap storage becomes a critical design concern and must be given special design consideration in order to naxinize the efficiency and the efficient use of the relatively expensive fast local memory. This storage priority and design consideration is further complicated since texture map information is generally stored relative to a "U-V" reference and local memory is usually organized with an "X-Y" addressing scheme. With a local XY memory, after higher priority storage space has been taken, there may be ample storage area in "X" space for a given WI texture map, but not enough dimension in the "Y" direction to store a designated texture map block. Thus, it becomes necessary to develop a local memory storage remapping scheme in order to reduce the effective "V" space required of a texture storage block.
Accordingly, there is a need for an improved remapping method and implementation which is effective to remap a texture map block from a "UV" referenced designation to an "XY" addressing equivalent in order to maximize the efficiency and efficient use of a local relatively fast subsystem memory, in combination with a host or system memory, in storing texture maps blocks of texture related information.